package 剑指offer;

public class _11旋转数组的最小数字 {
	/**
	 * 
	 *@time 2020年12月11日下午5:28:03
	 * 
	 *@param numbers
	 *@return int
	 *
	 *@see 通过一次遍历时间复杂度为O(n)
	 */
    public int minArray(int[] numbers) {
    	if(numbers==null||numbers.length==0)
    		return 0;
    	int l=numbers.length;
    	int min=numbers[l-1];
    	for(int i=l-1;i>=0;i--) {
    		if(min>=numbers[i]) 
    			min=numbers[i];    			
    		else return min;
    	}
    	return min;
    }
    /**
     * 
     *@time 2020年12月11日下午6:51:47
     * 
     *@param numbers
     *@return int
     *
     *@see 二分法
     */
    public int minArray1(int[] numbers) {
    	int i=0,j=numbers.length-1,m;
    	while(i<j) {
    	m=(i+j)/2;
    	if(numbers[m]>numbers[j]) i=m+1;
    	else if(numbers[m]<numbers[j]) j=m;
    	else j--;
    		
    	}
		return numbers[i];
    	
    }
}
